Automated systems exist for controlling and measuring usage of resources, such as gas, water and electricity. Such systems may include a number of different types of devices, which will collectively be referred to herein as “system devices.” Such system devices may include, for example, meter devices (e.g., gas, water, electricity meters, etc.), premises devices (e.g., in-home displays, thermostats, load control devices, etc.), and various other devices (e.g., communications devices, etc.). Within these automated systems, a number of different infrastructures may be employed for communicating data to and from the system devices. For example, some automated systems communicate with the system devices using a fixed wireless network, that includes, for example, a control node in communication with a number of device nodes (i.e., system devices). At the device nodes, the wireless communications circuitry may be incorporated into the system devices themselves, such that each device node in the wireless network comprises a system device having wireless communication circuitry that enables the system device to communicate with the control node. The device nodes may either communicate directly with the control node, or indirectly though one or more intermediate device nodes serving as repeaters. Some networks operating in this manner are referred to as “mesh” networks.
The system devices are typically controlled by software running on an embedded microcontroller, which is often referred to as firmware. Historically, the microcontroller code generated from the firmware is either programmed into a one-time programmable part or is loaded into a “mask” read only memory (“ROM”) part. In these cases, the firmware cannot be changed after it is initially loaded to the microcontroller. More recently, however, microcontrollers with flash memory have become more prevalent. Flash memory allows the microcontroller code to be changed multiple times, thereby allowing the firmware to be changed. For example, the firmware may be changed to add new features or to correct an anomaly in the existing firmware.
For system devices with flash memories, the microcontroller code is typically changed at the factory or on-site, in the field. These changes have typically been done via a direct hardware connection to the system device or via an optically isolated interface. The process of updating on-site system device flash memory by separately visiting each individual system device location involves considerable time, expense, and inconvenience. In many metering systems, a number of system devices may be located in disparate or inaccessible locations, thereby further complicating the on-site updating process. Moreover, another inefficiency of the on-site updating process is that it fails to leverage the advantages of system infrastructures, such as the wireless networks described above, which are commonly used to communicate with the system devices.
Thus, there is a need in the art for fast, efficient and cost effective techniques for updating system device microcontroller flash memories.